home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer: Getting Started / Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin / pc / mac / bonus / peter_le / macbinar / mydeskto.uni < prev    next >
Text File  |  1992-12-06  |  2KB  |  71 lines

  1. unit MyDesktopDB;
  2.  
  3. interface
  4.  
  5.     const
  6.         bad_rn = -1;
  7.  
  8.     function GetDesktopDB (vrn: integer; var rn: integer): OSErr;
  9. { You can safely ignore the error and use the returned rn in calls to Get/Set, they will just bounce }
  10.     procedure GetDTDBComment (rn: integer; var fs: FSSpec; var s: str255);
  11.     procedure SetDTDBComment (rn: integer; var fs: FSSpec; var s: str255);
  12.  
  13. implementation
  14.  
  15.     function GetDesktopDB (vrn: integer; var rn: integer): OSErr;
  16.         var
  17.             pb: DTPBRec;
  18.             oe: OSErr;
  19.             v: longInt;
  20.     begin
  21.         rn := bad_rn;
  22.         oe := Gestalt(gestaltDBAccessMgrAttr, v);
  23.         if (oe = noErr) & BTST(v, gestaltDBAccessMgrPresent) then
  24.             oe := -1;
  25.         if oe = noErr then begin
  26.             pb.ioNamePtr := nil;
  27.             pb.ioVRefNum := vrn;
  28.             oe := PBDTGetPath(@pb);
  29.             if oe = noErr then
  30.                 rn := pb.ioDTRefNum;
  31.         end;
  32.         GetDesktopDB := oe;
  33.     end;
  34.  
  35.     procedure GetDTDBComment (rn: integer; var fs: FSSpec; var s: str255);
  36.         var
  37.             pb: DTPBRec;
  38.             oe: OSErr;
  39.     begin
  40.         s := '';
  41.         if rn <> bad_rn then begin
  42.             pb.ioNamePtr := @fs.name;
  43.             pb.ioDTRefNum := rn;
  44.             pb.ioDTBuffer := @s[1];
  45.             pb.ioDirID := fs.parID;
  46.             oe := PBDTGetComment(@pb, false);
  47.             if oe = noErr then begin
  48.                 s[0] := chr(pb.ioDTActCount);
  49.             end
  50.             else
  51.                 s := '';
  52.         end;
  53.     end;
  54.  
  55.     procedure SetDTDBComment (rn: integer; var fs: FSSpec; var s: str255);
  56.         var
  57.             pb: DTPBRec;
  58.             oe: OSErr;
  59.     begin
  60.         s := '';
  61.         if rn <> bad_rn then begin
  62.             pb.ioNamePtr := @fs.name;
  63.             pb.ioDTRefNum := rn;
  64.             pb.ioDTBuffer := @s[1];
  65.             pb.ioDTReqCount := length(s);
  66.             pb.ioDirID := fs.parID;
  67.             oe := PBDTSetComment(@pb, false);
  68.         end;
  69.     end;
  70.  
  71. end.